/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controles;

import delegado.DelegadoCentral;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author gabriel
 */
public class ControladorCentral extends HttpServlet{

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        DelegadoCentral delegate = new DelegadoCentral();

        String accion = ""; //ruta del JSP a llamar a continuacion.
        String mensaje = ""; //mensaje a mostrar por pantalla en el JSP.

        try {
            String submit = request.getParameter("submit");
            
            if(submit != null) {

                if ( submit.equals("RegistrarProducto")) {
                    accion = "index.jsp";
                    String nombreProducto = request.getParameter("nombreProducto");
                    mensaje = delegate.RegistrarProducto(nombreProducto);
                }
                else if ( submit.equals("Sucursales Global")) {
                    accion = "sucursales.jsp";
                    mensaje = delegate.SucursalesGlobal();
                    request.setAttribute("regiones", null);
                }
                else if ( submit.equals("Sucursales por region")) {
                    accion = "sucursales.jsp";
                    ArrayList regiones = delegate.ObtenerRegiones();
                    request.setAttribute("regiones", regiones);
                }
                else if ( submit.equals("Buscar Sucursales")) {
                    accion = "sucursales.jsp";
                    String region = request.getParameter("regiones");
                    mensaje = delegate.SucursalesPorRegion(region);
                    ArrayList regiones = delegate.ObtenerRegiones();
                    request.setAttribute("regiones", regiones);
                }
                else if ( submit.equals("Inventario Global")) {
                    accion = "inventario.jsp";
                    mensaje = delegate.InventarioGlobal();
                    request.setAttribute("regiones", null);
                    request.setAttribute("sucursales", null);
                }
                else if ( submit.equals("Inventario por region")) {
                    accion = "inventario.jsp";
                    ArrayList regiones = delegate.ObtenerRegiones();
                    request.setAttribute("regiones", regiones);
                    request.setAttribute("sucursales", null);
                }
                else if ( submit.equals("Buscar Inventario de Region")) {
                    accion = "inventario.jsp";
                    String region = request.getParameter("regiones");
                    mensaje = delegate.InventarioPorRegion(region);
                    ArrayList regiones = delegate.ObtenerRegiones();
                    request.setAttribute("regiones", regiones);
                    request.setAttribute("sucursales", null);
                }
                else if ( submit.equals("Inventario por sucursal")) {
                    accion = "inventario.jsp";
                    ArrayList sucursales = delegate.ObtenerSucursales();
                    request.setAttribute("sucursales", sucursales);
                    request.setAttribute("regiones", null);
                }
                else if ( submit.equals("Buscar Inventario de Sucursal")) {
                    accion = "inventario.jsp";
                    String sucursal = request.getParameter("sucursales");
                    mensaje = delegate.InventarioPorSucursal(sucursal);
                    ArrayList sucursales = delegate.ObtenerSucursales();
                    request.setAttribute("sucursales", sucursales);
                    request.setAttribute("regiones", null);
                }
                else if ( submit.equals("Ventas Global")) {
                    accion = "ventas.jsp";
                    mensaje = delegate.VentasGlobal();
                    request.setAttribute("sucursales", null);
                    request.setAttribute("regiones", null);
                }
                else if ( submit.equals("Ventas Global")) {
                    accion = "ventas.jsp";
                    mensaje = delegate.VentasGlobal();
                    request.setAttribute("sucursales", null);
                    request.setAttribute("regiones", null);
                }
                else if ( submit.equals("Ventas por region")) {
                    accion = "ventas.jsp";
                    request.setAttribute("sucursales", null);
                    request.setAttribute("regiones", delegate.ObtenerRegiones());
                }
                else if ( submit.equals("Buscar Ventas de Region")) {
                    accion = "ventas.jsp";
                    String region = request.getParameter("regiones");
                    mensaje = delegate.VentasPorRegion(region);
                    request.setAttribute("sucursales", null);
                    request.setAttribute("regiones", delegate.ObtenerRegiones());
                }
                else if ( submit.equals("Ventas por sucursal")) {
                    accion = "ventas.jsp";
                    request.setAttribute("sucursales", delegate.ObtenerSucursales());
                    request.setAttribute("regiones", null);
                }
                else if ( submit.equals("Buscar Ventas de Sucursal")) {
                    accion = "ventas.jsp";
                    String sucursal = request.getParameter("sucursales");
                    mensaje = delegate.VentasPorSucursal(sucursal);
                    request.setAttribute("sucursales", delegate.ObtenerSucursales());
                    request.setAttribute("regiones", null);
                }
            }
        }
        catch (Exception e) {
            mensaje = e.getMessage();
        }

        request.setAttribute("message", mensaje);
        RequestDispatcher dispatcher = request.getRequestDispatcher(accion);

        dispatcher.forward(request, response);


    }
         // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
